public class Solution {
    //除自身乘积
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] product = new int[n];
        //第一个元素没有前缀
        product[0] = 1;
        //最后一个元素的前缀就是它的乘积
        for(int i = 1; i < n; i++) {
            //计算所有元素的前缀之积，填入数组中
            product[i] = product[i-1] * nums[i-1];
        }
        int last = 1;
        for(int i = n-1; i >= 0; i--) {
            product[i] = product[i] * last;
            //计算所有元素后缀之积与前缀相乘
            last = nums[i] * last;
        }
        return product;
    }
    //轮转数组
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        if(k > n) {
            k = k % n;
        }
        //将最后k个数放入数组最前方
        int[] arr = new int[n];
        for(int i = 0; i < k; i++) {
            arr[k-i-1] = nums[n-i-1];
        }
        //将剩下的数放入arr里
        for(int i = k; i < n; i++) {
            arr[i] = nums[i-k];
        }
        //将数组里的数互换
        for(int i = 0; i < n; i++) {
            nums[i] = arr[i];
        }
    }
}
